CouchDB একটি ডিস্ট্রিবিউটেড ডাটাবেস সিস্টেম যা Replication এবং Clustering এর মাধ্যমে High Availability এবং Fault Tolerance নিশ্চিত করে। এটি ডেটার সিঙ্ক্রোনাইজেশন, সেন্ট্রালাইজড এবং ডিস্ট্রিবিউটেড নেটওয়ার্কে কাজ করার জন্য দুটি গুরুত্বপূর্ণ ফিচার— Replication এবং Clustering—ব্যবহার করে।
Replication হল সেই প্রক্রিয়া যা একাধিক CouchDB সার্ভারের মধ্যে ডেটা সিঙ্ক্রোনাইজ এবং কপি করার জন্য ব্যবহৃত হয়। এর মাধ্যমে, CouchDB একাধিক সার্ভারের মধ্যে ডেটার একটি অফলাইন কপি তৈরি করতে পারে এবং সেগুলি real-time synchronization মাধ্যমে একে অপরের সাথে সিঙ্ক রাখে।
CouchDB তে Replication কনফিগারেশন করার জন্য, source
এবং target
ডাটাবেস নির্বাচন করতে হয়, এবং তখন continuous replication চালানো যেতে পারে।
{
"source": "source_db",
"target": "target_db",
"create_target": true,
"continuous": true
}
এই কনফিগারেশনে, ডেটা এক সার্ভার থেকে অন্য সার্ভারে সিঙ্ক্রোনাইজ হবে এবং সিঙ্ক্রোনাইজেশন চলমান থাকবে যতক্ষণ না এটি বন্ধ করা হয়।
Clustering হল একাধিক CouchDB সার্ভারকে একটি একক CouchDB Cluster হিসেবে যুক্ত করার প্রক্রিয়া, যার মাধ্যমে CouchDB এর স্কেলেবিলিটি এবং পারফরম্যান্স বৃদ্ধি পায়। CouchDB ক্লাস্টারিং এর মাধ্যমে load balancing, fault tolerance, এবং high availability সুবিধা প্রদান করা হয়।
CouchDB ক্লাস্টার গঠন করতে, প্রথমে একটি node তৈরি করতে হবে, তারপর অতিরিক্ত node যুক্ত করতে হবে:
# Node 1 শুরু করুন
couchdb -p 5984 -n node1
# Node 2 যোগ করুন
curl -X POST http://node1:5984/_cluster_setup -d '{"action": "enable_cluster", "username": "admin", "password": "password"}'
# Node 3 যোগ করুন
curl -X POST http://node1:5984/_cluster_setup -d '{"action": "add_node", "host": "node3", "port": "5984", "username": "admin", "password": "password"}'
বৈশিষ্ট্য | Replication | Clustering |
---|---|---|
স্কেলেবিলিটি | একাধিক সার্ভারে ডেটা সিঙ্ক্রোনাইজ করা যায়। | একাধিক সার্ভারকে একত্রিত করে স্কেল বৃদ্ধি করা হয়। |
ডেটা সিঙ্ক্রোনাইজেশন | এক সার্ভার থেকে অন্য সার্ভারে ডেটা কপি করা হয়। | ডেটা ক্লাস্টারের প্রতিটি node-এ শার্ড করা হয়। |
নির্ভরযোগ্যতা | একাধিক সার্ভারের মধ্যে ডেটা কপি করা হয়। | একাধিক node-এ ডেটা ভাগ করা হয়, যা উচ্চ সুরক্ষা প্রদান করে। |
ব্যবহার | ব্যাকআপ, ডেটা সিঙ্ক্রোনাইজেশন, বা এক্সপোর্ট। | বড় এবং ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন ব্যবহারের জন্য উপযুক্ত। |
CouchDB Replication এবং Clustering এর মাধ্যমে ডেটাবেসের স্কেলেবিলিটি, পারফরম্যান্স, এবং উচ্চ উপলভ্যতা বৃদ্ধি পায়। Replication ডেটা সিঙ্ক্রোনাইজেশন সহজ করে, যেখানে Clustering ডেটার শার্ডিং এবং লোড ব্যালেন্সিংয়ের মাধ্যমে সিস্টেমের স্কেল বাড়ায়। এই দুটি ফিচারের সঠিক ব্যবহার ডেটাবেস সিস্টেমের কার্যক্ষমতা এবং স্থিতিশীলতা নিশ্চিত করে।
CouchDB Replication একটি গুরুত্বপূর্ণ ফিচার যা ডেটাবেসের এক বা একাধিক কপি তৈরি করে এবং ডেটা একাধিক সার্ভারের মধ্যে সিঙ্ক্রোনাইজড রাখে। Replication CouchDB এর ডিস্ট্রিবিউটেড আর্কিটেকচারের একটি মূল উপাদান, যা high availability এবং fault tolerance নিশ্চিত করে।
CouchDB তে Replication হল এমন একটি প্রক্রিয়া যেখানে একটি ডকুমেন্ট বা ডাটাবেসের পরিবর্তন বা আপডেট এক সার্ভার থেকে অন্য সার্ভারে অনুলিপি করা হয়, যাতে সার্ভারগুলির মধ্যে ডেটা সিঙ্ক্রোনাইজ থাকে। এই প্রক্রিয়াটি eventual consistency মেনে চলে, যার মানে হল যে কিছু সময়ের মধ্যে সব সার্ভারগুলিতে সর্বশেষ ডেটা সিঙ্ক্রোনাইজ হবে।
CouchDB Replication ব্যবহৃত হয় বিভিন্ন প্রয়োজনে, যেমন:
CouchDB তে রেপ্লিকেশন কনফিগার করতে হলে আপনাকে একটি POST রিকুয়েস্ট পাঠাতে হবে, যাতে আপনি একটি রেপ্লিকেশন জব তৈরি করতে পারেন। এই রিকুয়েস্টের মধ্যে আপনি সোর্স এবং টার্গেট ডাটাবেসের নাম এবং অন্যান্য কনফিগারেশন নির্ধারণ করবেন।
POST /_replicate
{
"source": "source_database",
"target": "target_database"
}
এখানে:
আপনি চাইলে continuous
এবং create_target
প্যারামিটারও নির্ধারণ করতে পারেন:
POST /_replicate
{
"source": "source_database",
"target": "target_database",
"continuous": true,
"create_target": true
}
এখানে:
CouchDB Replication হল একটি অত্যন্ত শক্তিশালী ফিচার যা ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলির জন্য ডেটা সিঙ্ক্রোনাইজেশন, ব্যাকআপ, এবং ডেটা স্কেলিং নিশ্চিত করে। Continuous Replication এবং One-time Replication এর মাধ্যমে আপনি ডেটার সার্ভারগুলির মধ্যে সিঙ্ক্রোনাইজেশন সহজে পরিচালনা করতে পারবেন। CouchDB এর রেপ্লিকেশন প্রক্রিয়া eventual consistency নিশ্চিত করে এবং ডিস্ট্রিবিউটেড সিস্টেমে ডেটা ব্যবস্থাপনা এবং অপ্রতিরোধ্য প্রবাহ তৈরি করতে সহায়ক।
CouchDB এর Replication একটি শক্তিশালী বৈশিষ্ট্য যা একাধিক সার্ভারের মধ্যে ডেটা সিঙ্ক্রোনাইজেশন এবং ব্যাকআপ নিশ্চিত করতে ব্যবহৃত হয়। Replication CouchDB-তে eventual consistency বজায় রাখে, অর্থাৎ ডেটা একাধিক সার্ভারে ধীরে ধীরে সিঙ্ক্রোনাইজ হয়। CouchDB-তে দুটি প্রধান ধরনের রেপ্লিকেশন ব্যবহৃত হয়: Continuous Replication এবং One-time Replication।
Continuous Replication হল একটি প্রক্রিয়া যেখানে ডেটা এক সার্ভার থেকে অন্য সার্ভারে স্বয়ংক্রিয়ভাবে এবং অবিরত সিঙ্ক্রোনাইজ হয়। এটি ডেটাবেসের মধ্যে live synchronization তৈরি করে, যেখানে নতুন পরিবর্তনগুলি (ডকুমেন্ট যোগ, আপডেট, বা মুছে ফেলা) স্বয়ংক্রিয়ভাবে এবং নিয়মিত এক সার্ভার থেকে অন্য সার্ভারে স্থানান্তরিত হয়।
একটি continuous replication সেটআপ করতে, আপনি replicator document ব্যবহার করতে পারেন। নিচে একটি উদাহরণ দেখানো হলো:
{
"_id": "replicator/continuous-replication",
"source": "http://source_server:5984/source_db",
"target": "http://target_server:5984/target_db",
"continuous": true,
"create_target": true
}
এখানে:
true
হবে, তখন continuous replication সক্রিয় হবে।One-time Replication হল একটি প্রক্রিয়া যেখানে একটি নির্দিষ্ট সময়ে এক সার্ভার থেকে আরেক সার্ভারে ডেটা সিঙ্ক্রোনাইজ করা হয়। এটি একটি manual sync প্রক্রিয়া, যা একবারের জন্য রান করা হয় এবং তারপর স্বয়ংক্রিয়ভাবে চালু থাকে না। সাধারণত, এটি ব্যাকআপ নেওয়ার জন্য বা একটি ডাটাবেসের একটি কপি তৈরি করার জন্য ব্যবহৃত হয়।
একটি one-time replication সেটআপ করতে, নিচে একটি উদাহরণ দেওয়া হলো:
{
"_id": "replicator/one-time-replication",
"source": "http://source_server:5984/source_db",
"target": "http://target_server:5984/target_db",
"continuous": false
}
এখানে:
false
থাকবে, তখন এটি one-time replication চালাবে।বৈশিষ্ট্য | Continuous Replication | One-time Replication |
---|---|---|
রেপ্লিকেশন ফ্রিকোয়েন্সি | অবিরত (Real-time Sync) | এককালীন (Single Event) |
উপযুক্ত পরিবেশ | High Availability, Real-time Sync | ব্যাকআপ, এককালীন ডেটা কপি তৈরি |
অ্যাক্সেসের সময় | সার্ভার চালু থাকা পর্যন্ত চলতে থাকে | একবার সম্পন্ন হলে থেমে যায় |
ব্যবহার | ডেটার সিঙ্ক্রোনাইজেশন এবং ফিল্টারিং | ব্যাকআপ, ডেটা ট্রান্সফার |
কনফিগারেশন | কমপ্লেক্স, স্বয়ংক্রিয় | সহজ, ম্যানুয়াল |
CouchDB রেপ্লিকেশন কনফিগারেশনে ত্রুটি হলে, এটি error রিপোর্ট করবে। আপনি replication status মনিটর করতে পারেন এবং ত্রুটিগুলি সনাক্ত করতে পারেন:
Replication Status চেক করার জন্য:
GET http://localhost:5984/_replicator
Replication Errors দেখার জন্য:
GET http://localhost:5984/_replicator/replicator/replication_id
Continuous Replication এবং One-time Replication CouchDB তে ডেটা সিঙ্ক্রোনাইজেশন করার দুটি প্রধান পদ্ধতি। Continuous Replication ব্যবহার করে আপনি সার্ভারগুলির মধ্যে ডেটা সিঙ্ক্রোনাইজেশন অবিরত রাখতে পারেন, যা সিস্টেমের উচ্চ availability নিশ্চিত করে, অন্যদিকে One-time Replication সাধারণত ব্যাকআপ বা ডেটা স্থানান্তরের জন্য উপযুক্ত, যেখানে শুধুমাত্র একবার ডেটা সিঙ্ক্রোনাইজ করতে হয়।
Multi-master replication হল একটি রেপ্লিকেশন কৌশল যেখানে একাধিক সার্ভারের মধ্যে ডেটা একে অপরের সাথে সিঙ্ক্রোনাইজ করা হয় এবং প্রতিটি সার্ভার স্বাধীনভাবে ডেটা লিখতে এবং পড়তে সক্ষম। এর মানে হল যে কোনো সার্ভারে ডেটা পরিবর্তন করা হলে, সেই পরিবর্তন সমস্ত সার্ভারে রেপ্লিকেট হবে।
CouchDB একটি multi-master replication সমর্থন করে, যার মাধ্যমে একাধিক সার্ভার একে অপরের সাথে ডেটা সিঙ্ক্রোনাইজ করে এবং উচ্চ availability এবং fault tolerance নিশ্চিত করা হয়। এটি বিশেষভাবে ডিস্ট্রিবিউটেড সিস্টেম এবং ক্লাস্টারিংয়ের জন্য উপযুক্ত।
CouchDB তে _replicator ডাটাবেস ব্যবহার করে multi-master replication কনফিগার করা হয়। এটি একটি বিশেষ ডাটাবেস যা রেপ্লিকেশন কাজের জন্য ব্যবহৃত হয়।
ধরা যাক, দুইটি CouchDB সার্ভার রয়েছে: Server A এবং Server B। আমরা এই সার্ভারের মধ্যে রেপ্লিকেশন সেটআপ করতে চাই।
Server A থেকে Server B তে রেপ্লিকেশন শুরু করা:
POST /_replicate
{
"source": "http://serverA:5984/mydb",
"target": "http://serverB:5984/mydb"
}
Server B থেকে Server A তে রেপ্লিকেশন শুরু করা:
POST /_replicate
{
"source": "http://serverB:5984/mydb",
"target": "http://serverA:5984/mydb"
}
CouchDB তে দুই ধরনের রেপ্লিকেশন মোড রয়েছে:
Multi-master replication CouchDB তে একটি শক্তিশালী বৈশিষ্ট্য, যা ডিস্ট্রিবিউটেড সিস্টেমে ডেটার সিঙ্ক্রোনাইজেশন এবং high availability নিশ্চিত করে। একাধিক সার্ভারকে independently রিড/রাইট অপারেশন করতে দেয় এবং ডেটা আপডেটের পরে সেই পরিবর্তনগুলো স্বয়ংক্রিয়ভাবে অন্যান্য সার্ভারে রেপ্লিকেট হয়। এটি বড়, উচ্চ পারফরম্যান্স এবং রিয়েল-টাইম অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত।
CouchDB একটি ডিস্ট্রিবিউটেড NoSQL ডাটাবেস সিস্টেম যা Clustering সমর্থন করে। CouchDB ক্লাস্টারিং একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য, যা বিভিন্ন সার্ভার বা নোডে ডেটা শেয়ার করতে এবং উচ্চ উপলব্ধতা (High Availability) নিশ্চিত করতে সাহায্য করে। CouchDB Clustering কনফিগারেশন এবং ব্যবস্থাপনা এমন একটি পদ্ধতি, যার মাধ্যমে একাধিক CouchDB নোডকে একটি একক ক্লাস্টারে যুক্ত করা হয় এবং ডেটার রেপ্লিকেশন এবং ডিস্ট্রিবিউশন পরিচালনা করা হয়।
CouchDB ক্লাস্টার একটি গ্রুপ নোডে ডেটা সংরক্ষণ এবং পরিচালনা করার প্রক্রিয়া, যেখানে ডেটা ক্লাস্টারের নোডগুলির মধ্যে ভাগ করা হয়। CouchDB ক্লাস্টারের মাধ্যমে:
CouchDB ক্লাস্টার সেটআপের জন্য একটি স্টেপ-বাই-স্টেপ গাইড নিচে দেওয়া হলো:
প্রথমে, CouchDB সঠিকভাবে ইনস্টল এবং কনফিগার করা প্রয়োজন। এটি করতে, আপনি নিচের নির্দেশনা অনুসরণ করতে পারেন:
sudo apt-get update
sudo apt-get install couchdb
CouchDB ক্লাস্টার সেটআপ করতে হলে, কয়েকটি নোড (সার্ভার) কনফিগার করতে হবে। প্রতিটি নোডের জন্য নিম্নলিখিত কাজ করতে হবে:
local.ini
কনফিগারেশন ফাইল এর মাধ্যমে CouchDB নোড কনফিগার করুন:bind_address
: ক্লাস্টার নোডগুলোর মধ্যে যোগাযোগের জন্য সঠিক IP ঠিকানা নির্ধারণ করুন।port
: সার্ভারের পোর্ট নির্ধারণ করুন (ডিফল্ট পোর্ট 5984)।[couchdb]
hostname = couchdb1.local
bind_address = 0.0.0.0
port = 5984
একবার CouchDB ইনস্টল এবং কনফিগারেশন সম্পন্ন হলে, আপনাকে ক্লাস্টারের অংশ হিসেবে নতুন নোড যোগ করতে হবে। এটি করার জন্য নিচের পদক্ষেপ অনুসরণ করতে হবে:
CouchDB নোড ক্লাস্টারে যোগ করার জন্য একটি নতুন নোড থেকে অন্য নোডের সাথে যোগদান করতে:
curl -X POST http://admin:password@localhost:5984/_cluster_setup -d '{"action":"enable_cluster", "username":"admin", "password":"password", "node_count":3}'
এখানে:
username
এবং password
হল আপনার admin পাসওয়ার্ড।node_count
দ্বারা কতগুলো নোড ক্লাস্টারে যুক্ত হবে তা নির্ধারণ করা হয়।ক্লাস্টারের স্ট্যাটাস চেক করুন: CouchDB ক্লাস্টারের স্ট্যাটাস চেক করতে, আপনি নীচের কমান্ডটি ব্যবহার করতে পারেন:
curl http://admin:password@localhost:5984/_membership
এটি ক্লাস্টারে যোগ করা সমস্ত নোডের একটি তালিকা প্রদান করবে।
ক্লাস্টারে নতুন নোড যোগ করা: ক্লাস্টারে নতুন নোড যোগ করতে হলে, নিচের কমান্ডটি ব্যবহার করুন:
curl -X POST http://admin:password@localhost:5984/_cluster_setup -d '{"action":"add_node", "host":"new_node_ip", "username":"admin", "password":"password"}'
ক্লাস্টার থেকে নোড সরানো: যদি আপনি কোনো নোড ক্লাস্টার থেকে সরাতে চান, তাহলে নিচের কমান্ডটি ব্যবহার করুন:
curl -X POST http://admin:password@localhost:5984/_cluster_setup -d '{"action":"remove_node", "host":"node_ip", "username":"admin", "password":"password"}'
CouchDB ক্লাস্টার সেটআপের পরে, আপনি ক্লাস্টারের পারফরম্যান্স এবং মনিটরিং চালিয়ে যেতে পারেন। CloudWatch, Prometheus, বা Grafana এর মাধ্যমে আপনি CouchDB এর পারফরম্যান্স এবং অন্যান্য মেট্রিক্স মনিটর করতে পারেন।
প্রচার এবং মেমরি ব্যবহারের মনিটরিং: CouchDB এর _stats এন্ডপয়েন্ট ব্যবহার করে আপনি বিভিন্ন সার্ভারের মেমরি এবং CPU ব্যবহারের তথ্য পেতে পারেন।
curl http://admin:password@localhost:5984/_stats
_replicator
এন্ডপয়েন্ট ব্যবহার করতে পারেন অথবা ডেটা টেবিলের JSON ডাম্প তৈরি করতে পারেন।CouchDB Clustering অত্যন্ত শক্তিশালী একটি ফিচার যা ডিস্ট্রিবিউটেড সিস্টেমে স্কেলেবিলিটি, রেপ্লিকেশন, এবং উচ্চ প্রাপ্যতা নিশ্চিত করে। এটি আপনাকে ডেটা শার্ডিং এবং ফিল্টারিং করতে সহায়ক এবং বড় অ্যাপ্লিকেশনগুলির জন্য এটি একটি কার্যকরী সমাধান। CouchDB Clustering কনফিগারেশন এবং ব্যবস্থাপনা সঠিকভাবে করলে, আপনার CouchDB সিস্টেম আরও দক্ষ এবং স্কেলেবল হবে।
common.read_more